#include "fontsetting.h"
#include "ui_fontsetting.h"

FontSetting::FontSetting(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::FontSetting)
{
    ui->setupUi(this);
    init();
}

FontSetting::~FontSetting()
{
    delete ui;
}

bool FontSetting::isFcitx() {
    if(bashResult(QStringList() << "-c" << "whereis fcitx5").split(":")[1]!="\n" || bashResult(QStringList() << "-c" << "whereis fcitx").split(":")[1]!="\n") {
        return true;
    }
    else {
        qDebug() << "no fcitx, hide IMEsetting func.";
        return false;
    }
}

void FontSetting::init()
{
    if(bashResult(QStringList() << "-c" << "whereis fcitx").split(":")[1]!="\n") {
        ui->label->setText("你使用的是fcitx,而不是fcitx5. 设置可能不生效。");
    }

    settingStep(0);
}

void FontSetting::on_nxtButton_clicked()
{
    settingStep(page + 1);
}

void FontSetting::on_preButton_clicked()
{
    settingStep(page - 1);
}

void FontSetting::on_actBtn_1_clicked()
{
    system(btn1_cmd.toLatin1());
}

void FontSetting::settingStep(int n)
{
    ui->actBtn_1->hide();
    ui->frame_3->hide();

    QStringList str;
    switch (n) {
    case 0:
        str << "<p align='center'><img width=150 src=':/resource/FS_Icon' />"
            << "<h2 align='center'>欢迎</h2>"
            << "<p align='center'>这只是根据我自己电脑的经验制作的调整向导。也许你用的上，也许不太行。更多的作为参考意见吧</p>"
            << "<h4 align='center'>注意：这个过程完全依赖桌面环境及输入法框架。因此这个向导也许只适用于Debian12 KDE+fcitx</h4>";
        break;
    case 1: {
        str << "<h2 align='center'>先来设置环境变量</h2>"
            << "你需要先清理一下你的bashrc或者相关写入了针对X11输入法配置的文档。"
            << "然后，将下面这段内容写入到 <b>/etc/environment</b> 文件中，保存即可。"
            << "export XMODIFIERS=@im=fcitx"
            << "*可以直接点击下面的按钮，通过带nano进行编辑<br>*这个操作需要root权限"
            << "编辑完成后，你的environment中应该至少存在图片第一行的内容"
            << "<img width='" + QString::number(ui->textBrowser->width()-50) + "' src=':/resource/FS_enviroment.png' />";
        ui->actBtn_1->show();
        ui->actBtn_1->setText("通过 nano 编辑");
        ui->frame_3->show();
        btn1_cmd = "x-terminal-emulator -e 'sudo nano /etc/environment' &";
        break;
    }
    case 2:
        str << "<h2 align='center'>现在，调整一下虚拟键盘设定</h2>"
            << "<h4 align='center'>由于这一步设置方法与桌面强相关，所以这里只能针对KDE桌面进行说明</h4>"
            << "点击下面的按钮打开KDE虚拟键盘设置，选择你的输入法确认即可。"
            << "就像这样："
            << "<img width='" + QString::number(ui->textBrowser->width()-50) + "' src=':/resource/FS_kcmvirtualkeyboard.png' />";
        ui->actBtn_1->show();
        ui->actBtn_1->setText("打开KDE设置");
        ui->frame_3->show();
        btn1_cmd = "kcmshell5 kcm_virtualkeyboard &";
        break;
    case 3:
        str << "<h2 align='center'>顺便再整理一下输入法配置</h2>"
            << "<h4 align='center'>这里只针对fcitx框架说明。其他输入法框架还请参照思路进行修改</h4>"
            << "<ol>"
               "<li>点击下面的按钮启动fcitx设置</li>"
               "<li>依次选择：确定->是->do not active any IM from im-config and use desktop default</li>"
               "<li>确认</li></ol>"
            << "<img width='" + QString::number(ui->textBrowser->width()-50) + "' src=':/resource/FS_imconfig.png' />";
        ui->actBtn_1->show();
        ui->actBtn_1->setText("打开fcitx设置");
        ui->frame_3->show();
        btn1_cmd = "im-config &";
        break;
    case 4:
        str << "<p align='center'><img height=" + QString::number(ui->textBrowser->height()/2) + " src=':/resource/Icon_OK' /><br><br>"
            << "<h2 align='center'>至此，调整完成</h2>";
        ui->frame_3->hide();
        break;
    default:
        str << ui->textBrowser->toHtml();
        break;
    }
    ui->textBrowser->setHtml(str.join("</p><p>") + "</p>");

    if(n <= 0) {
        ui->preButton->setEnabled(0);
    }
    else if(n >= 4) {
        ui->nxtButton->setEnabled(0);
    }
    else if(!ui->preButton->isEnabled()) {
        ui->preButton->setEnabled(1);
    }
    else if(!ui->nxtButton->isEnabled()) {
        ui->nxtButton->setEnabled(1);
    }

    page = n;
}


